﻿/// <summary>
/// Script de controlador del layaut del site.
/// </summary>
/// <remarks>
/// Creacion: 	ITAB 01/05/2016
/// </remarks>
ns('Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarGastoPersonalProyecto.FormularioRegistro');
Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarGastoPersonalProyecto.FormularioRegistro.Controller = function () {
    var base = this;

    base.Ini = function () {
        'use strict'
        
        base.Control.ValFormularioRegistro = new Pe.GMD.UI.Web.Components.Validator({
            form: base.Control.FrmFormularioRegistro(),
            messages: Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarGastoPersonalResource,
            validationsExtra: base.Function.ObtenerValidacionesAdicionales()
        });

        base.Control.BtnCancelar().click(base.Event.BtnCancelarClick);
        base.Control.BtnGrabar().click(base.Event.BtnGrabarClick);
        base.Control.btnAprobar().click(base.Event.btnAprobarClick);
        base.Control.btnConfirmar().click(base.Event.btnConfirmarClick);
        base.Control.BtnBuscarProyecto().click(base.Event.BtnBuscarProyectoClick);
        
        base.Control.FrmBusquedaProyecto = new Pe.Petecos.Comercial.Presentacion.General.Comun.BusquedaProyectoGasto.Controller({
            AgregarSuccess: base.Event.AgregarSuccess
        });

        if (Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarGastoPersonal.Model.GastoPersonal != null) {
            base.Function.CargarGastoPersonal(Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarGastoPersonal.Model.GastoPersonal);
            base.Function.ConfigurarOpciones(Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarGastoPersonal.Model.GastoPersonal);
        }
    };

    base.Parameters = {
        Proyecto: {
            CodigoProyecto: 0
        },
        GastoPersonal: {
            CodigoGastoPersonal: 0
        }
    };

    base.Control = {
        FrmBusquedaProyecto: null,
        ValFormularioRegistro: null,

        Mensaje: new Pe.GMD.UI.Web.Components.Message(),
        FrmFormularioRegistro: function () { return $('#frmFormularioRegistro'); },

        TxtCodigoGastoPersonal: function () { return $('#txtCodigoGastoPersonal'); },
        TxtNumeroProyecto: function () { return $('#txtNumeroProyecto'); },
        BtnBuscarProyecto: function () { return $('#btnBuscarProyecto'); },
        TxtNombreProyecto: function () { return $('#txtNombreProyecto'); },

        TxtMontoGasto: function () { return $('#txtMontoGasto'); },
        SlcTipoGasto: function () { return $('#slcTipoGasto'); },
        TxtFechaGasto: function () { return $('#txtFechaGasto'); },

        TxtObservaciones: function () { return $('#txtObservaciones'); },

        BtnCancelar: function () { return $('#btnCancelarRegistro'); },
        BtnGrabar: function () { return $('#btnGrabarRegistro'); },
        btnAprobar: function () { return $('#btnAprobarRegistro'); },
        btnConfirmar: function () { return $('#btnConfirmarRegistro'); },
    };

    base.Event = {
        BtnCancelarClick: function () {
            'use strict'
            window.location.href = Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarGastoPersonal.Actions.Index;
        },

        BtnGrabarClick: function () {
            'use strict'
           
            if (base.Control.ValFormularioRegistro.isValid()) {
                base.Control.Mensaje.Confirmation({
                    message: Pe.Petecos.Comercial.Presentacion.Base.MensajeGenerico.ConfirmacionGuardar,
                    onAccept: function () {
                        base.Ajax.AjaxGrabar.data = {
                            CodigoGastoPersonal: base.Parameters.GastoPersonal.CodigoGastoPersonal,
                            CodigoProyecto: base.Control.TxtNumeroProyecto().val(),
                            NombreProyecto: base.Control.TxtNombreProyecto().val(),
                            TipoGasto: base.Control.SlcTipoGasto().val(),
                            MontoGasto: base.Control.TxtMontoGasto().val(),
                            Observaciones: base.Control.TxtObservaciones().val(),
                            FechaGasto: base.Control.TxtFechaGasto().val(),
                        };
                        base.Ajax.AjaxGrabar.submit();
                    }
                });
            }
        },

        btnAprobarClick: function () {
            'use strict'

            if (base.Parameters.GastoPersonal.CodigoGastoPersonal > 0) {
                base.Control.Mensaje.Confirmation({
                    message: Pe.Petecos.Comercial.Presentacion.Base.MensajeGenerico.ConfirmacionGuardar,
                    onAccept: function () {
                        base.Ajax.AjaxAprobar.data = {
                            codigos: [base.Parameters.GastoPersonal.CodigoGastoPersonal]
                        };
                        base.Ajax.AjaxAprobar.submit();
                    }
                });
            }
        },

        btnConfirmarClick: function () {
            'use strict'

            if (base.Parameters.GastoPersonal.CodigoGastoPersonal > 0) {
                base.Control.Mensaje.Confirmation({
                    message: Pe.Petecos.Comercial.Presentacion.Base.MensajeGenerico.ConfirmacionGuardar,
                    onAccept: function () {
                        base.Ajax.AjaxAprobar.data = {
                            codigos: [base.Parameters.GastoPersonal.CodigoGastoPersonal]
                        };
                        base.Ajax.AjaxConfirmar.submit();
                    }
                });
            }
        },

        BtnBuscarProyectoClick: function () {
            base.Control.FrmBusquedaProyecto.Show();
        },

        AgregarSuccess: function (seleccionados) {
            $(seleccionados).each(function (index, seleccionado) {
                base.Parameters.Proyecto = seleccionado;

                base.Control.TxtNumeroProyecto().val(seleccionado.CodigoProyecto);
                base.Control.TxtNombreProyecto().val(seleccionado.NombreProyecto);
            });
        },

        AjaxGrabarSuccess: function (data) {
            'use strict'
            base.Control.Mensaje.Information({
                message: Pe.Petecos.Comercial.Presentacion.Base.MensajeGenerico.SeGuardoInformacionExito
            });
            //debugger;
            //Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarGastoPersonal.Model.GastoPersonal = data.Result;

            //if (Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarGastoPersonal.Model.GastoPersonal != null) {
            //    base.Function.CargarGastoPersonal(Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarGastoPersonal.Model.GastoPersonal);
            //    base.Function.ConfigurarOpciones(Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarGastoPersonal.Model.GastoPersonal);
            //}

            window.location.href = Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarGastoPersonal.Actions.Index;
        },

        AjaxAprobarSuccess: function (data) {
            if (data.CodeResult == -1) {
                base.Control.Mensaje.Warning({
                    message: 'Usted no cuenta con permisos para realizar esta operación'
                });
            } else {
                base.Control.Mensaje.Information({
                    message: Pe.Petecos.Comercial.Presentacion.Base.MensajeGenerico.SeGuardoInformacionExito
                });

                window.location.href = Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarGastoPersonal.Actions.Index;
            }
        },

        AjaxConfirmarSuccess: function (data) {
            if (data.CodeResult == -1) {
                base.Control.Mensaje.Warning({
                    message: 'Usted no cuenta con permisos para realizar esta operación'
                });
            } else {
                base.Control.Mensaje.Information({
                    message: Pe.Petecos.Comercial.Presentacion.Base.MensajeGenerico.SeGuardoInformacionExito
                });

                window.location.href = Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarGastoPersonal.Actions.Index;
            }
        }
    };

    base.Ajax = {
        AjaxAprobar: new Pe.GMD.UI.Web.Components.Ajax({
            action: Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarGastoPersonal.Actions.Aprobar,
            autoSubmit: false,
            onSuccess: base.Event.AjaxAprobarSuccess
        }),

        AjaxGrabar: new Pe.GMD.UI.Web.Components.Ajax({
            action: Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarGastoPersonal.Actions.Registrar,
            autoSubmit: false,
            onSuccess: base.Event.AjaxGrabarSuccess
        }),

        AjaxConfirmar: new Pe.GMD.UI.Web.Components.Ajax({
            action: Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarGastoPersonal.Actions.Confirmar,
            autoSubmit: false,
            onSuccess: base.Event.AjaxGrabarSuccess
        }),
    };

    base.Function = {
        ConfigurarOpciones: function (model) {
            
            if (model.CodigoEstado == Pe.Petecos.Comercial.Presentacion.Enumerados.EstadoGastoPersonal.Registrado) {
                if (model.TipoGasto == Pe.Petecos.Comercial.Presentacion.Enumerados.TipoGastoPersonal.GastoImprevisto) {
                    base.Control.btnAprobar().show();
                }
                if (model.TipoGasto == Pe.Petecos.Comercial.Presentacion.Enumerados.TipoGastoPersonal.SolicitudEfectivo) {
                    base.Control.btnConfirmar().show();
                }
            };
            if (model.CodigoEstado == Pe.Petecos.Comercial.Presentacion.Enumerados.EstadoGastoPersonal.Confirmado) {
                base.Control.btnAprobar().show();
            }
        },

        OrdenarLista: function (lista, propiedad, ascendente) {
            return lista.sort(function (a, b) {
                if (ascendente) return (a[propiedad] > b[propiedad]);
                else return (b[propiedad] > a[propiedad]);
            });
        },

        CargarGastoPersonal: function (evento) {
            base.Parameters.GastoPersonal = evento;

            base.Control.TxtCodigoGastoPersonal().val(evento.CodigoGastoPersonal);
            base.Control.TxtNumeroProyecto().val(evento.CodigoProyecto);
            base.Control.TxtNombreProyecto().val(evento.NombreProyecto);

            base.Control.TxtMontoGasto().val(evento.MontoGasto);
            base.Control.SlcTipoGasto().val(evento.TipoGasto);
            base.Control.TxtFechaGasto().val(evento.FechaGasto);

            base.Control.TxtObservaciones().val(evento.Observaciones);
        },

        ObtenerValidacionesAdicionales: function () {
            var validaciones = new Array();
            validaciones.push(
                    {
                        Event: function () {
                            var resultado = null;
                            if (base.Parameters.GastoPersonal.CodigoGastoPersonal != null)
                                resultado = true;
                            else
                                resultado = (base.Parameters.Proyecto != null);
                            return resultado;
                        },
                        codeMessage: 'EtiquetaOrdenCompra'
                    }
                );
            return validaciones;
        },
    };
};

ns('Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarGastoPersonalProyecto.FormularioRegistro');
try {

    $(document).ready(function () {
        'use strict';
        Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarGastoPersonalProyecto.FormularioRegistro.Vista = new Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarGastoPersonalProyecto.FormularioRegistro.Controller();
        Pe.Petecos.Comercial.Presentacion.Ventas.AdministrarGastoPersonalProyecto.FormularioRegistro.Vista.Ini();
    });
} catch (ex) {
}